package view.joueur;
import java.awt.BorderLayout;
import java.awt.CardLayout;

import javax.swing.JPanel;

import view.joueur.JPJoueurMenu;

import controler.CtrJoueur;
import extended.ExtJoueur;


/**
 * @author C-Net
 * Panel des joueurs
 */
public class JPJoueur extends javax.swing.JPanel{

	private static final long serialVersionUID = -5669560325063313595L;

	private CtrJoueur ctrJoueur;
	
	private JPJoueurMenu jPJoueurMenu;
	private JPanel jPCentral;
	private JPJoueurAffichage jPJoueurAffichage;
	private JPJoueurAjouter jPJoueurAjouter;
	private JPJoueurRestaurer jPJoueurRestaurer;
	private JPJoueurModifier jPJoueurModifier;
	private JPJoueurDetail jPJoueurDetail;
	private CardLayout jPAffichageLayout = new CardLayout();

	
	public JPJoueur(CtrJoueur p_ctrJoueur) {
		super();
		this.ctrJoueur = p_ctrJoueur;
		this.jPJoueurAffichage = new JPJoueurAffichage(this);
		this.jPJoueurAjouter = new JPJoueurAjouter(this);
		this.jPJoueurRestaurer = new JPJoueurRestaurer(this);
		this.jPJoueurModifier = new JPJoueurModifier(this);
		this.jPJoueurDetail = new JPJoueurDetail(this);

		initGUI();
	}
	
	private void initGUI() {
		try {
			setLayout(new BorderLayout(0, 0));
			{
				jPJoueurMenu = new JPJoueurMenu(this);
				this.add(jPJoueurMenu, BorderLayout.WEST);
			}
			{
				jPCentral = new JPanel();
				jPCentral.setLayout(jPAffichageLayout);
				this.add(jPCentral, BorderLayout.CENTER);
				
			}
			
			jPCentral.add( "affichage" , this.jPJoueurAffichage);
			jPCentral.add("ajouter" , this.jPJoueurAjouter);
			jPCentral.add("restaurer", this.jPJoueurRestaurer);
			jPCentral.add("modifier", this.jPJoueurModifier);
			jPCentral.add("detail", this.jPJoueurDetail);
			

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void affAjouter() {
		jPAffichageLayout.show(jPCentral , "ajouter");		
	}

	public void affAfficher() throws Exception {
		
		jPAffichageLayout.show(jPCentral , "affichage");		
	}

	public void affDetail() throws Exception {
		int i = jPJoueurAffichage.getjTListe().getSelectedRow();
		if (i != -1){
			ExtJoueur joueur = this.ctrJoueur.chercherJoueur(this.jPJoueurAffichage.getjTListe().getValueAt(i,0).toString());

			jPJoueurDetail.getTxtNom().setText(joueur.getJoueur().getNomJoueur());
			jPJoueurDetail.getTxtScenario().setText(joueur.getJoueur().getBackground());
			jPJoueurDetail.getTxtMdP().setText(joueur.getJoueur().getPwdJoueur());
			jPJoueurDetail.getTxtObjectif().setText(joueur.getJoueur().getObjectif());
			jPJoueurDetail.getTxtMin().setText(String.valueOf(joueur.getJoueur().getChronoJoueur()/60));
			jPJoueurDetail.getTxtSeconde().setText(String.valueOf(joueur.getJoueur().getChronoJoueur()%60));
			
			jPJoueurDetail.getjPListeDecouvert().RaZ();
			jPJoueurDetail.getjPListeADecouvrir().RaZ();
			for (int a = 0 ; a < ctrJoueur.getCtrPartie().getPartie().getIndice().size() ; a++){			
				for (int b = 0 ; b < joueur.getIndiceDecouvert().size() ; b ++){
					if (ctrJoueur.getCtrPartie().getPartie().getIndice().get(a) == joueur.getIndiceDecouvert().get(b)){
						String idIndice = String.valueOf(joueur.getIndiceDecouvert().get(b).getIdIndice());
						String nom = joueur.getIndiceDecouvert().get(b).getNomIndice();
						String description = joueur.getIndiceDecouvert().get(b).getDescriptionIndice();
						
						String[] tab = {idIndice, nom, description};
						jPJoueurDetail.getjPListeDecouvert().getModel().addRow(tab);
						jPJoueurDetail.getjPListeDecouvert().getjTListe().repaint();
		
					}
				}
			}
			for (int a = 0 ; a < ctrJoueur.getCtrPartie().getPartie().getIndice().size() ; a++){			
				for (int b = 0 ; b < joueur.getIndiceNonDecouvert().size() ; b ++){
					if (ctrJoueur.getCtrPartie().getPartie().getIndice().get(a) == joueur.getIndiceNonDecouvert().get(b)){
						String idIndice = String.valueOf(joueur.getIndiceNonDecouvert().get(b).getIdIndice());
						String nom = joueur.getIndiceNonDecouvert().get(b).getNomIndice();
						String description = joueur.getIndiceNonDecouvert().get(b).getDescriptionIndice();
						
						String[] tab = {idIndice, nom, description};
						jPJoueurDetail.getjPListeADecouvrir().getModel().addRow(tab);
						jPJoueurDetail.getjPListeADecouvrir().getjTListe().repaint();
					}
				}
			}
			jPAffichageLayout.show(jPCentral , "detail");
		}
	}
	
	public void affModifier() {
		int i = jPJoueurAffichage.getjTListe().getSelectedRow();
		if (i != -1){
			
			ExtJoueur joueur = this.ctrJoueur.chercherJoueur(this.jPJoueurAffichage.getjTListe().getValueAt(i,0).toString());
//			for (int j = 0 ; j < ctrJoueur.getCtrPartie().getPartie().getJoueur().size() ; j++){
//				if ( ctrJoueur.getCtrPartie().getPartie().getJoueur().get(j).getIdJoueur() == id){
//					joueur = new ExtJoueur( ctrJoueur.getCtrPartie().getPartie().getJoueur().get(j),
//							ctrJoueur.getCtrPartie().getPartie().getIndice());
//				}
//					
//			}
			jPJoueurModifier.getTxtNom().setText(joueur.getJoueur().getNomJoueur());
			jPJoueurModifier.getTxtScenario().setText(joueur.getJoueur().getBackground());
			jPJoueurModifier.getTxtMdP().setText(joueur.getJoueur().getPwdJoueur());
			jPJoueurModifier.getTxtObjectif().setText(joueur.getJoueur().getObjectif());
			jPJoueurModifier.getTxtMin().setText(String.valueOf(joueur.getJoueur().getChronoJoueur()/60));
			jPJoueurModifier.getTxtSeconde().setText(String.valueOf(joueur.getJoueur().getChronoJoueur()%60));

			jPJoueurModifier.setId(joueur.getJoueur().getIdJoueur());

			jPJoueurModifier.initModif(joueur);
			jPAffichageLayout.show(jPCentral , "modifier");	
		}
	}

	public void affRestaurer() {
		getjPJoueurRestaurer().afficherListe();
		jPAffichageLayout.show(jPCentral , "restaurer");		
	}

	public void Supprimer() {
		int i = jPJoueurAffichage.getjTListe().getSelectedRow();
		if (i != -1){
			try {
				ctrJoueur.getCtrPartie().majIdJoueur();

				String strID = jPJoueurAffichage.getjTListe().getValueAt(i, 0).toString();
				int id = Integer.parseInt(strID);
				this.getCtrJoueur().supprimerJoueur(id);

			} catch (Exception e1) {
				e1.printStackTrace();
			}
			try {
				this.getjPAffichage().getModel().removeRow(i);					
				this.getjPAffichage().getjTListe().setModel(this.getjPAffichage().getModel());
				this.getjPAffichage().getjTListe().repaint();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		 }		
	}

	public void setCtrJoueur(CtrJoueur ctrJoueur) {
		this.ctrJoueur = ctrJoueur;
	}

	public CtrJoueur getCtrJoueur() {
		return ctrJoueur;
	}

	public void setjPAffichage(JPJoueurAffichage jPJoueurAffichage) {
		this.jPJoueurAffichage = jPJoueurAffichage;
	}

	public JPJoueurAffichage getjPAffichage() {
		return jPJoueurAffichage;
	}


	public void setjPModifier(JPJoueurModifier jPJoueurModifier) {
		this.jPJoueurModifier = jPJoueurModifier;
	}

	public JPJoueurModifier getjPModifier() {
		return jPJoueurModifier;
	}

	public void setjPAjouter(JPJoueurAjouter jPJoueurAjouter) {
		this.jPJoueurAjouter = jPJoueurAjouter;
	}

	public JPJoueurAjouter getjPAjouter() {
		return jPJoueurAjouter;
	}

	public void setjPJoueurRestaurer(JPJoueurRestaurer jPJoueurRestaurer) {
		this.jPJoueurRestaurer = jPJoueurRestaurer;
	}

	public JPJoueurRestaurer getjPJoueurRestaurer() {
		return jPJoueurRestaurer;
	}

}
